package fenae.pesquisa;

import java.util.Enumeration;

import lumis.doui.processaction.ProcessActionHandler;
import lumis.doui.source.Source;
import lumis.portal.PortalException;
import lumis.portal.serviceinterface.IServiceInterfaceRequest;

@SuppressWarnings("unchecked")
public class ResponderPesquisaProcessActionHandler extends
		ProcessActionHandler<Source> {
	public void processAction() throws PortalException {
		IServiceInterfaceRequest request = this.douiContext.getRequest();

		String usuariouid = request.getSessionConfig().getUserId();

		Enumeration e = request.getParameterNames();

		String pesquisauid = request.getParameter("PesquisaUID");

		RespostaUsuarioDaoJdbc respostaUsuarioDaoJdbc = new RespostaUsuarioDaoJdbc();

		while (e.hasMoreElements()) {
			String parameterName = (String) e.nextElement();

			if (parameterName.indexOf("Objetiva_") != -1) {
				String respostauid = request.getParameter(parameterName);

				String perguntauid = parameterName.substring(9);

				respostaUsuarioDaoJdbc.registraRespostaObjetivaUsuario(
						pesquisauid, perguntauid, respostauid, usuariouid,
						this.transaction);
			} else if (parameterName.indexOf("Aberta_") != -1) {
				String respostaDiscursiva = request.getParameter(parameterName);

				String perguntauid = parameterName.substring(7);

				respostaUsuarioDaoJdbc.registraRespostaDiscursivaUsuario(
						pesquisauid, perguntauid, respostaDiscursiva,
						usuariouid, this.transaction);
			} else if (parameterName.indexOf("MultiplaEscolha_") != -1) {
				String[] respostasuid = request
						.getParameterValues(parameterName);

				if (respostasuid == null)
					continue;
				String perguntauid = parameterName.substring(16);

				for (int i = 0; i < respostasuid.length; i++) {
					respostaUsuarioDaoJdbc.registraRespostaObjetivaUsuario(
							pesquisauid, perguntauid, respostasuid[i],
							usuariouid, this.transaction);
				}

			} else if (parameterName.indexOf("ObjetivaAbertaRadio_") != -1) {
				String respostauid = request.getParameter(parameterName);

				String perguntauid = parameterName.substring(20);

				respostaUsuarioDaoJdbc.registraRespostaObjetivaUsuario(
						pesquisauid, perguntauid, respostauid, usuariouid,
						this.transaction);
			} else if (parameterName.indexOf("ObjetivaAbertaTextArea_") != -1) {
				String respostaDiscursiva = request.getParameter(parameterName);

				String perguntauid = parameterName.substring(23);

				respostaUsuarioDaoJdbc.registraRespostaDiscursivaUsuario(
						pesquisauid, perguntauid, respostaDiscursiva,
						usuariouid, this.transaction);
			} else if (parameterName.indexOf("MultiplaEscolhaCheckBox_") != -1) {
				String[] respostasuid = request
						.getParameterValues(parameterName);

				if (respostasuid == null)
					continue;
				String perguntauid = parameterName.substring(24);

				for (int i = 0; i < respostasuid.length; i++) {
					respostaUsuarioDaoJdbc.registraRespostaObjetivaUsuario(
							pesquisauid, perguntauid, respostasuid[i],
							usuariouid, this.transaction);
				}
			} else {
				if (parameterName.indexOf("MultiplaEscolhaTextArea_") == -1)
					continue;
				String respostaDiscursiva = request.getParameter(parameterName);

				String perguntauid = parameterName.substring(24);

				respostaUsuarioDaoJdbc.registraRespostaDiscursivaUsuario(
						pesquisauid, perguntauid, respostaDiscursiva,
						usuariouid, this.transaction);
			}
		}
		addDefaultResponse();
	}
}
